home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 20 / Cream of the Crop 20 (Terry Blount) (1996).iso / program / n_b_v203.zip / A-MUST.TXT < prev    next >
Text File  |  1996-07-04  |  6KB  |  108 lines

  1. $if 0
  2.     ┌──────────────────────────╖                        PowerBASIC v3.20
  3.  ┌──┤          DASoft          ╟──────────────────────┬──────────────────╖
  4.  │  ├──────────────────────────╢    Copyright 1995    │ DATE: 1995-10-01 ╟─╖
  5.  │  │ FILE NAME   A-MUST  .TXT ║          by          ╘════════════════─ ║ ║
  6.  │  │                          ║  Don Schullian, Jr.                     ║ ║
  7.  │  ╘══════════════════════════╝                                         ║ ║
  8.  │ A license is hereby granted to the holder to use this source code in  ║ ║
  9.  │ any program, commercial or otherwise,  without receiving the express  ║ ║
  10.  │ permission of the copyright holder and without paying any royalties,  ║ ║
  11.  │ as long as this code is not distributed in any compilable format.     ║ ║
  12.  │  IE: source code files, PowerBASIC Unit files, and printed listings   ║ ║
  13.  ╘═╤═════════════════════════════════════════════════════════════════════╝ ║
  14.    │                ....................................                   ║
  15.    ╘═══════════════════════════════════════════════════════════════════════╝
  16. $endif
  17.  
  18.   This library includes one of the most important routines any data program
  19.   will use: fTinput$. (No brag, just fact.) There are sufficient files here
  20.   to get you up to speed with this function but what I want to discuss here
  21.   is data input, in general.
  22.  
  23.   How you store data on the disk, how you use it in the program and how the
  24.   users sees it do NOT have to be the same things! In fact, its usually the
  25.   best bet to NOT use and store the data the way the users sees because the
  26.   human brain and the CPU don't work the same way.  Dates and Times are two
  27.   good examples of this.  Both of these can be stored in  two bytes but can
  28.   take up to 10 bytes to display so the human can understand them. While in
  29.   the two byte format they can be added, subtracted and stored quicker than
  30.   when in the 10 byte format.
  31.  
  32.   Another VERY important part of a data base is the input and use of names.
  33.   In America the average length of a name is about 17 characters. Of course
  34.   that includes Last First Middle-Initial but leaves no room for titles and
  35.   honorifics. Also it is quite insufficient for truly long names!  And most
  36.   programs I have seen force the user to remember the format the name is to
  37.   be input in! That's dangerous because users are part and parcel of an age
  38.   old law first expounded by Mr. Murphy!  You HAVE to protect them from any
  39.   and all possibilities of screwing up! Then you have different name styles
  40.   in almost every country around the world, so, nothing is sacred.  To help
  41.   relieve this problem I devised a 3 field input system that keeps the user
  42.   honest, allows for variable length parts and lets the computer do the job
  43.   it was designed to do.  I've gone into all this in a previous library but
  44.   I'm going to do it all again 'cause IT IS IMPORTANT!
  45.  
  46.   Your program presents the user with 3 separate fields whose total length
  47.   are longer than the final acceptable length of the packed data:
  48.  
  49.          Last or Family Name: Public________________________ 30 chars
  50.     First and Middle Initial: John Q._______________________ 30 chars
  51.                   Honorifics: Mr., III_______                15 chars
  52.  
  53.   This stops the user from entering:
  54.     John Q. Public, III
  55.     Mr. John Q. Public, III
  56.     Public John Q. Mr.,III
  57.     and a host of others
  58.   instead of:
  59.     Public, John Q.(Mr.,III)
  60.   which is still kind'a confusin'!
  61.  
  62.   You take the 3 fields F1$, F2$ and F3$ and run them through
  63.   a little routine like:  N$ = LTRIM$( F1$ ) + CHR$(0) +_
  64.                                LTRIM$( F2$ ) + CHR$(0) +_
  65.                                LTRIM$( F3$ )
  66.   to pack them up into one string.
  67.  
  68.   You have only to make 2 tests on this string before accepting it:
  69.     1) is the "packed" length of the 3 names =< 37?
  70.     2) are all the characters in the name acceptable?
  71.        Some languages (Greek for one) have letters that look like
  72.        English but have different ASCii values and if an English "M"
  73.        is inserted into a name where the Greek "M" (Me) should be the
  74.        data will not sort correctly and the user may not be able to find
  75.        the name afterwards.
  76.  
  77.   Now that everything is correct and within the allowable length you can
  78.   do just about anything you want with it! Because you used CHR$(0) to
  79.   separate the fields and you've stored the fields in the correct order
  80.   you could UCASE the whole thing to make an index reference, store the
  81.   whole thing to the record as one field, or use one of the name display
  82.   functions to display any or part of the name for different uses.
  83.   SEE: fDisplayName$
  84.  
  85.   The most important things are that you have:
  86.     1) almost guaranteed that the incoming data is in a format that is
  87.        correct and usable by the program
  88.     2) there is/was sufficient room to input the separate parts of the
  89.        name without forcing the user to compromize any one part.
  90.        ie: Mrs. Jane A. Hyatt-Papadopoulous, PhD.  unpacked full length
  91.            Hyatt-Papadopoulos|Jane A.|Mrs., PhD.   packed at 37 chars
  92.  
  93.   Yes, I know this seems to throw a bit more work on you, the programmer,
  94.   but, believe me, it saves hours trying to explain to your users how
  95.   vital it is to input the names "in the correct format" by forcing them
  96.   to do so. It also saves hours of digging through data bases for "lost"
  97.   records that were actually mis-filed because someone input Jane Doe
  98.   instead of Doe, Jane. I <KNOW> this is true because I've spent those
  99.   hours time and time again. I've even gone looking for bugs in the
  100.   indexing routine(s) that I KNEW were good! It is also more acceptable
  101.   to the users, I've been told, because it allows you to use names in
  102.   several different ways for display, reports, menus, etc. which help
  103.   the users get through their tasks easier. In short, it's just better
  104.   than most of what I've seen over the years!
  105.  
  106.   Thanks, and happy hunting......
  107.  
  108.   d83)